package com.yuzhi.master.sewage.pipe.domain.bo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yuzhi.common.core.validate.AddGroup;
import com.yuzhi.common.core.validate.EditGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.yuzhi.common.core.domain.BaseEntity;
import org.springframework.data.annotation.Id;

/**
 * 管道信息业务对象 drain_pipe
 *
 * @author ${author}
 * @date 2025-07-07
 */
@Data
public class DrainPipeBo extends BaseEntity {

    @TableId(type = IdType.ASSIGN_UUID)
    @Schema(description="id主键")
    private String id;
    /**
     * 管道代码
     */
    @Id
    @NotBlank(message = "管道代码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String draiPipeId;

    /**
     * 排水系统代码
     */
    @NotBlank(message = "排水系统代码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sysId;

    /**
     * 所在道路名称
     */
    @NotBlank(message = "所在道路名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String draiPipeNameRoad;

    /**
     * 管道等级
     */
    @NotNull(message = "管道等级不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer draiPipeGrade;

    /**
     * 管道的属性
     */
    @NotNull(message = "管道属性不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer draiPipeType;

    /**
     * 起点道路名称
     */
    private String draiPipeBroadName;

    /**
     * 终点道路名称
     */
    private String draiPipeEroadName;

    /**
     * 断面形式
     */
    @NotNull(message = "断面形式不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer draiPipeStyle;

    /**
     * 管道直径1（毫米）
     */
    @NotNull(message = "管道直径1不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer draiPipeD1;

    /**
     * 管道直径2（毫米）
     */
    private Integer draiPipeD2;

    /**
     * 管道长度（米）
     */
    @NotNull(message = "管道长度不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer draiPipeLength;

    /**
     * 管道材质
     */
    @NotNull(message = "管道材质不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer draiPipeMaterial;

    /**
     * 起点地面标高（米）
     */
    private BigDecimal draiPipeAltBeg;

    /**
     * 终点地面标高（米）
     */
    private BigDecimal draiPipeAltEnd;

    /**
     * 起点管底标高（米）
     */
    private BigDecimal draiPipePaltBeg;

    /**
     * 终点管底标高（米）
     */
    private BigDecimal draiPipePaltEnd;

    /**
     * 检查井数量
     */
    private Integer draiPipeManholeN;

    /**
     * 雨水口数量
     */
    private Integer draiPipeStormwellN;

    /**
     * 设施的状态
     */
    private Integer draiPipeState;

    /**
     * 竣工日期
     */
    private LocalDateTime draiPipeDateFinish;

    /**
     * 设计单位
     */
    private String draiPipeOmDsn;

    /**
     * 施工单位
     */
    private String draiPipeOmBuild;

    /**
     * 结构状况
     */
    private String draiPipeStruc;

    /**
     * 水力状况
     */
    private String draiPipeHydra;

    /**
     * 养护单位
     */
    private String draiPipeOmRep;

    /**
     * 维修日期
     */
    private LocalDateTime draiPipeDateRep;

    /**
     * 倒虹管位置
     */
    private String draiPipeInvert;

    /**
     * 备注
     */
    private String draiPipeRemark;

    /**
     * 起点经度E
     */
    private BigDecimal longitude;

    /**
     * 起点纬度N
     */
    private BigDecimal latitude;

    /**
     * 终点经度E
     */
    private BigDecimal longitude2;

    /**
     * 终点纬度N
     */
    private BigDecimal latitude2;

    /**
     * 行政区域
     */
    private String areaCode;

    /**
     * 起点井的ID
     */
    private Integer drainManholeStartId;

    /**
     * 终点井的ID
     */
    private Integer drainManholeStopId;
}